package cn.tedu.jsd2206csmall.product.schedule;

import cn.tedu.jsd2206csmall.product.mapper.BrandMapper;
import cn.tedu.jsd2206csmall.product.pojo.vo.BrandListItemVO;
import cn.tedu.jsd2206csmall.product.pojo.vo.BrandStandardVO;
import cn.tedu.jsd2206csmall.product.repo.IBrandRedisRepository;
import cn.tedu.jsd2206csmall.product.service.IBrandService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 *
 *
 * @author xufaxin
 * @date:2022/10/19
 **/
@Slf4j
@Component
public class CacheSchedule {
    @Autowired
    IBrandService brandService;

    public CacheSchedule() {
        log.debug("创建配置类对象：CacheSchedule");
    }

    // 关于@Scheduled注解的属性配置
    // fixedRate: 执行间隔时间，以毫秒为单位
    // fixedDelay：上次执行结束后，过多少毫秒执行一次
    // corn：使用一个字符串，其中包含6~7个值，每个值之间使用一个空格进行分隔
    // >> 在corn的字符串中的各值分别表示：秒 分 时 日 月 周（星期） [年]（可配可不配）
    // >> 例如：corn = "56 34 12 2 1 ？ 2035"，则表示2035年1月2号12点34分56秒将执行此计划任务。？表示无论是周几都将执行此计划
    // >> 以上各值都可以使用通配符，使用星号（*）则表示任意值，使用问号（？）则表示不关心具体值，并且？只能用于周或日
    // >>以上各值，可以使用“x/x”格式的值，例如：分钟对应的值使用“1/5“，则表示当分钟值为1的那一刻开始执行，往后每间隔5分钟执行一次
    @Scheduled(fixedRate = 5 * 60 * 1000)
    void a() {
        log.debug("执行开始处理缓存预热的计划任务");

        brandService.rebuildCache();

        log.debug("处理缓存的计划任务执行完成！");
    }

}